package com.tl.boot.main.datasource;//package com.tl.boot.main.datasource;
//
//import com.alibaba.druid.pool.DruidDataSource;
//import com.alibaba.druid.support.http.StatViewServlet;
//import com.alibaba.druid.support.http.WebStatFilter;
//import org.mybatis.spring.annotation.MapperScan;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.boot.context.properties.ConfigurationProperties;
//import org.springframework.boot.web.servlet.FilterRegistrationBean;
//import org.springframework.boot.web.servlet.ServletRegistrationBean;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//import javax.sql.DataSource;
//import java.sql.SQLException;
//
//@Configuration
//@MapperScan( {"com.tl.boot.mapper.**"} )
//@ConfigurationProperties( prefix = "spring.datasource" )
//public class DruidConfigCopy {
//
//    private Logger logger = LoggerFactory.getLogger(DruidConfigCopy.class);
//
//    public String getUrl() {
//        return url;
//    }
//
//    public void setUrl(String url) {
//        this.url = url;
//    }
//
//    public String getDriverClassName() {
//        return driverClassName;
//    }
//
//    public void setDriverClassName(String driverClassName) {
//        this.driverClassName = driverClassName;
//    }
//
//    public String getUsername() {
//        return username;
//    }
//
//    public void setUsername(String username) {
//        this.username = username;
//    }
//
//    public String getPassword() {
//        return password;
//    }
//
//    public void setPassword(String password) {
//        this.password = password;
//    }
//
//    public int getInitialSize() {
//        return initialSize;
//    }
//
//    public void setInitialSize(int initialSize) {
//        this.initialSize = initialSize;
//    }
//
//    public int getMinIdle() {
//        return minIdle;
//    }
//
//    public void setMinIdle(int minIdle) {
//        this.minIdle = minIdle;
//    }
//
//    public int getMaxActive() {
//        return maxActive;
//    }
//
//    public void setMaxActive(int maxActive) {
//        this.maxActive = maxActive;
//    }
//
//    public int getMaxWait() {
//        return maxWait;
//    }
//
//    public void setMaxWait(int maxWait) {
//        this.maxWait = maxWait;
//    }
//
//    public int getTimeBetweenEvictionRunsMillis() {
//        return timeBetweenEvictionRunsMillis;
//    }
//
//    public void setTimeBetweenEvictionRunsMillis(int timeBetweenEvictionRunsMillis) {
//        this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;
//    }
//
//    public int getMinEvictableIdleTimeMillis() {
//        return minEvictableIdleTimeMillis;
//    }
//
//    public void setMinEvictableIdleTimeMillis(int minEvictableIdleTimeMillis) {
//        this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;
//    }
//
//    public boolean isPoolPreparedStatements() {
//        return poolPreparedStatements;
//    }
//
//    public void setPoolPreparedStatements(boolean poolPreparedStatements) {
//        this.poolPreparedStatements = poolPreparedStatements;
//    }
//
//    public int getMaxPoolPreparedStatementPerConnectionSize() {
//        return maxPoolPreparedStatementPerConnectionSize;
//    }
//
//    public void setMaxPoolPreparedStatementPerConnectionSize(int maxPoolPreparedStatementPerConnectionSize) {
//        this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;
//    }
//
//    public String getFilters() {
//        return filters;
//    }
//
//    public void setFilters(String filters) {
//        this.filters = filters;
//    }
//
//    public String getConnectionProperties() {
//        return connectionProperties;
//    }
//
//    public void setConnectionProperties(String connectionProperties) {
//        this.connectionProperties = connectionProperties;
//    }
//
//    public boolean isUseGlobalDataSourceStat() {
//        return useGlobalDataSourceStat;
//    }
//
//    public void setUseGlobalDataSourceStat(boolean useGlobalDataSourceStat) {
//        this.useGlobalDataSourceStat = useGlobalDataSourceStat;
//    }
//
//    public String getDruidLoginAccount() {
//        return druidLoginAccount;
//    }
//
//    public void setDruidLoginAccount(String druidLoginAccount) {
//        this.druidLoginAccount = druidLoginAccount;
//    }
//
//    public String getDruidLoginPassword() {
//        return druidLoginPassword;
//    }
//
//    public void setDruidLoginPassword(String druidLoginPassword) {
//        this.druidLoginPassword = druidLoginPassword;
//    }
//
//    public String getDruidAllowIp() {
//        return druidAllowIp;
//    }
//
//    public void setDruidAllowIp(String druidAllowIp) {
//        this.druidAllowIp = druidAllowIp;
//    }
//
//    public String getDruidDenyIp() {
//        return druidDenyIp;
//    }
//
//    public void setDruidDenyIp(String druidDenyIp) {
//        this.druidDenyIp = druidDenyIp;
//    }
//
//    public boolean isResetEnable() {
//        return resetEnable;
//    }
//
//    public void setResetEnable(boolean resetEnable) {
//        this.resetEnable = resetEnable;
//    }
//
//    private String url;
//    private String driverClassName;
//    private String username;
//    private String password;
//
//    private int initialSize;
//    private int minIdle;
//    private int maxActive;
//    private int maxWait;
//    private int timeBetweenEvictionRunsMillis;
//    private int minEvictableIdleTimeMillis;
//    private boolean poolPreparedStatements;
//    private int maxPoolPreparedStatementPerConnectionSize;
//    private String filters;
//    private String connectionProperties;
//    private boolean useGlobalDataSourceStat;
//    private String druidLoginAccount;
//    private String druidLoginPassword;
//    private String druidAllowIp;
//    private String druidDenyIp;
//    private boolean resetEnable;
//
//    @Bean
//    //配置servlet
//    public ServletRegistrationBean druidStatViewServlet() {
//        ServletRegistrationBean registrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
//
//        if (druidAllowIp != null) {
//            registrationBean.addInitParameter("allow", druidAllowIp);
//        }
//
//        if (druidDenyIp != null) {
//            registrationBean.addInitParameter("deny", druidDenyIp);
//        }
//
//        registrationBean.addInitParameter("loginUsername", druidLoginAccount);
//        registrationBean.addInitParameter("loginPassword", druidLoginPassword);
//        registrationBean.addInitParameter("resetEnable", resetEnable ? "true" : "false");
//        return registrationBean;
//    }
//
//    @Bean
//    //配置过滤器 默认通过http://localhost:1000/bootFirst/druid/login.html 页面进行访问
//    public FilterRegistrationBean druidWebStatViewFilter() {
//        FilterRegistrationBean registrationBean = new FilterRegistrationBean(new WebStatFilter());
//        registrationBean.addInitParameter("urlPatterns", "/*");
//        registrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*");
//        return registrationBean;
//    }
//
//    @Bean
//    public DataSource druidDataSource() {
//        DruidDataSource dataSource = new DruidDataSource();
//        /*数据源主要配置*/
//        dataSource.setUrl(url);
//        dataSource.setDriverClassName(driverClassName);
//        dataSource.setUsername(username);
//        dataSource.setPassword(password);
//
//        /*数据源补充配置*/
//        dataSource.setMaxActive(maxActive);
//        dataSource.setInitialSize(initialSize);
//        dataSource.setMinIdle(minIdle);
//        dataSource.setMaxWait(maxWait);
//        dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
//        dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
//        dataSource.setPoolPreparedStatements(poolPreparedStatements);
//        dataSource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
//        dataSource.setConnectionProperties(connectionProperties);
//        dataSource.setUseGlobalDataSourceStat(useGlobalDataSourceStat);
//
//        try {
//            dataSource.setFilters(filters);
//            logger.info("Druid数据源初始化设置成功......");
//        } catch (SQLException e) {
//            e.printStackTrace();
//            logger.info("Druid数据源初始化设置失败......");
//        }
//        return dataSource;
//    }
//
//}
